package com.ruoyi.combat.service.equiplocation;

import com.ruoyi.combat.domain.equiplocation.CombatEquipInfo;
import com.ruoyi.combat.domain.equiplocation.CombatFakeIp;
import com.ruoyi.combat.domain.position.AntiPositioningInfo;
import com.ruoyi.combat.domain.request.AntiAttributionCallbackRequest;
import com.ruoyi.combat.domain.vo.RiskDataStatisticsVo;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 网络IPService接口
 * 
 * @author ruoyi
 * @date 2025-01-06
 */
public interface ICombatEquipInfoService 
{
    /**
     * 查询网络IP
     * 
     * @param id 网络IP主键
     * @return 网络IP
     */
    public CombatEquipInfo selectCombatEquipInfoById(Long id);

    /**
     * 查询网络IP列表
     * 
     * @param combatEquipInfo 网络IP
     * @return 网络IP集合
     */
    public List<CombatEquipInfo> selectCombatEquipInfoList(CombatEquipInfo combatEquipInfo);

    /**
     * 新增网络IP
     * 
     * @param combatEquipInfo 网络IP
     * @return 结果
     */
    public int insertCombatEquipInfo(CombatEquipInfo combatEquipInfo);

    /**
     * 修改网络IP
     * 
     * @param combatEquipInfo 网络IP
     * @return 结果
     */
    public int updateCombatEquipInfo(CombatEquipInfo combatEquipInfo);

    /**
     * 批量删除网络IP
     * 
     * @param ids 需要删除的网络IP主键集合
     * @return 结果
     */
    public int deleteCombatEquipInfoByIds(Long[] ids);

    /**
     * 删除网络IP信息
     * 
     * @param id 网络IP主键
     * @return 结果
     */
    public int deleteCombatEquipInfoById(Long id);

    /**
     * 基于虚假地标的抗定位
     * @param antiPositioningInfo 请求参数
     */
    public void antiPositioning(AntiPositioningInfo antiPositioningInfo);

    /**
     * 基于时延混淆的抗定位
     * @param antiPositioningInfo 请求参数
     */
    public void antiPositioningByDelay(AntiPositioningInfo antiPositioningInfo);

    /**
     * 设备风险数据统计
     */
    RiskDataStatisticsVo riskDataStatistics();

    AjaxResult antiAttributionCallback(AntiAttributionCallbackRequest request);

    List<CombatFakeIp> selectCombatFakeIpList(CombatFakeIp combatFakeIp);

    /**
     * 虚假IP新增
     */
    AjaxResult fakeIpAdd(CombatFakeIp combatFakeIp);

    /**
     * 虚假IP修改
     */
    AjaxResult fakeIpEdit(CombatFakeIp combatFakeIp);

    /**
     * 虚假IP删除
     */
    AjaxResult fakeIpDel(Long id);

    AjaxResult importEquipInfoData(MultipartFile file, String algorithmMark);

    void repositioning(CombatEquipInfo combatEquipInfo);

    List<RiskDataStatisticsVo> riskDataByPosition();
}
